<?php
require_once("XmlControls.php");

/*
STRUTTURA VARIANTE:
>Variante
 >>Variante* [DATA_VERB_APPR*= datetime | ALTRE_MOTIVAZIONI=string(1000) | IMP_RIDET_LAVORI=decim(15,3) | IMP_RIDET_SERVIZI=DECIM(15,3) | IMP_RIDET_FORNIT=decim(15,3) | IMP_SICUREZZA=DECIM(15,3) | IMP_PROGETTAZIONE=decim(15,3) | IMP_DISPOSIZIONE=decim(15,3) | DATA_ATTO_AGGIUNTIVO=datetime | NUM_GIORNI_PROROGA=int(5) | ID_SCHEDA_LOCALE = string(max50) | ID_SCHEDA_SIMOG=string(max50)]
 >>Motivi [ID_MOTIVO_VAR*=numeri] 
*/

class XmlVarianti extends XmlControls{
	
	static $instance;
	
	private function __construct() {
		
	}

	static function getInstance(){
		
		if(self::$instance == NULL){
			
			self::$instance = new XmlVarianti();
		}
		
		return self::$instance;
	}

	final public function GetData($conn,$cig,$num_progr,$num_progr_scheda,$tipo_invio=null) {
  //SOVRASCRIVO IL NUM_PROGR_SCHEDA PER ASSOCIARE CORRETTAMENTE I MSG DI ERRORE
  $_SESSION['XML__NUM_PROGR_SCHEDA']=$num_progr_scheda;

  //GESTIONE INVIO DI SCHEDE MULTIPLE (VERIFICA NUMERO DI SCHEDE INVIABILI E SEQUENZA)
  if($tipo_invio!=null){
   $query_multi="SELECT NUM_PROGR_SCHEDA FROM VARIANTI WHERE CIG='".$cig."' AND SCHEDA_CHIUSA IN ('N') 
                 AND ARCHIVIATA !='S' AND NUM_PROGR='".$num_progr."' ORDER BY NUM_PROGR_SCHEDA";
   $ret=$conn->doquery_oracle_import($query_multi, "select");
   $num_progr_scheda_limit=$ret[1][1];
  } 
  
		$query = "SELECT CIG, DATA_APPROVAZIONE_VARIANTE, MOTIVAZIONE_VARIANTE_ID, IMPORTO_RID_LAVORI , 
							IMPORTO_RID_SERVIZI , IMPORTO_RID_FORNITURE , IMPORTO_SICUREZZA, IMPORTO_PROGETTAZIONE , 
							IMPORTO_SPESE , DATA_SOTTOSCRIZIONE, GIORNI_PROROGA, SCHEDA_CHIUSA , UTENTE_ID, DATA_CHIUSURA, 
							NUM_PROGR, DATA_SCADENZA_INVIO, NUM_PROGR_SCHEDA , ID, ID_SIMOG, ALTRE_MOTIVAZIONI
							FROM VARIANTI WHERE CIG='".$cig."' AND SCHEDA_CHIUSA IN ('S') AND ARCHIVIATA !='S' AND NUM_PROGR='".$num_progr."'";
		
		if ($num_progr_scheda!="" AND $tipo_invio == null){
			$query.=" AND NUM_PROGR_SCHEDA='".$num_progr_scheda."'";
		}
		
		if($tipo_invio!=null){
		
   if($num_progr_scheda_limit!=""){
    $query.=" AND NUM_PROGR_SCHEDA < ".$num_progr_scheda_limit;
   }
   
   $query.=" ORDER BY NUM_PROGR_SCHEDA";
  }
		  
		$rs=$conn->doquery_oracle_import($query, "select");
		
		$rs_data=array();
		$i=0;
		
		foreach($rs as $data){
		
			$rs_data[$i]["CIG"]=$data["1"];
			$rs_data[$i]["DATA_APPROVAZIONE_VARIANTE"]=$data["2"];
			$rs_data[$i]["MOTIVAZIONE_VARIANTE_ID"]=$data["3"];
			$rs_data[$i]["IMPORTO_RID_LAVORI"]=$data["4"];
			$rs_data[$i]["IMPORTO_RID_SERVIZI"]=$data["5"];
			$rs_data[$i]["IMPORTO_RID_FORNITURE"]=$data["6"];
			$rs_data[$i]["IMPORTO_SICUREZZA"]=$data["7"];
			$rs_data[$i]["IMPORTO_PROGETTAZIONE"]=$data["8"];
			$rs_data[$i]["IMPORTO_SPESE"]=$data["9"];
			$rs_data[$i]["DATA_SOTTOSCRIZIONE"]=$data["10"];
			$rs_data[$i]["GIORNI_PROROGA"]=$data["11"];
			$rs_data[$i]["SCHEDA_CHIUSA"]=$data["12"];
			$rs_data[$i]["UTENTE_ID"]=$data["13"];
			$rs_data[$i]["DATA_CHIUSURA"]=$data["14"];
			$rs_data[$i]["NUM_PROGR"]=$data["15"];
			$rs_data[$i]["DATA_SCADENZA_INVIO"]=$data["16"];
			$rs_data[$i]["NUM_PROGR_SCHEDA"]=$data["17"];
			$rs_data[$i]["ID"]=$data["18"];
			$rs_data[$i]["ID_SIMOG"]=$data["19"];
			$rs_data[$i]["ALTRE_MOTIVAZIONI"]=$data["20"];
			
			$i=$i+1;
		}
		
		return $rs_data;		
		
	}
	
	final public function CreateXml($rs,$conn) {
				

		
		$xml.='<DatiVarianti>';
		$rs_data[1]=$rs["data"];
		
		foreach($rs_data as $record_key  => $record_value){

		 foreach($record_value as $record){

   //SOVRASCRIVO IL NUM_PROGR_SCHEDA PER ASSOCIARE CORRETTAMENTE I MSG DI ERRORE
   $_SESSION['XML__NUM_PROGR_SCHEDA']=$record["NUM_PROGR_SCHEDA"];

			$DATA_VERB_APPR=$this->WorkData("DATA_VERB_APPR",$record["DATA_APPROVAZIONE_VARIANTE"]);	 	//presenza A* - V
			$IMP_RIDET_LAVORI=$this->WorkImporto("IMP_RIDET_LAVORI",$record["IMPORTO_RID_LAVORI"]);		 	//presenza A - V
			$IMP_RIDET_SERVIZI=$this->WorkImporto("IMP_RIDET_SERVIZI",$record["IMPORTO_RID_SERVIZI"]);	//presenza A - V
			$IMP_RIDET_FORNIT=$this->WorkImporto("IMP_RIDET_FORNIT",$record["IMPORTO_RID_FORNITURE"]);	//presenza A - V
			$IMP_SICUREZZA=$this->WorkImporto("IMP_SICUREZZA",$record["IMPORTO_SICUREZZA"]);						//presenza A - V
			$IMP_PROGETTAZIONE=$this->WorkImporto("IMP_PROGETTAZIONE",$record["IMPORTO_PROGETTAZIONE"]);//presenza A - V
			$IMP_DISPOSIZIONE=$this->WorkImporto("IMP_DISPOSIZIONE",$record["IMPORTO_SPESE"]);					//presenza A - V
			$DATA_ATTO_AGGIUNTIVO=$this->WorkData("DATA_ATTO_AGGIUNTIVO",$record["DATA_SOTTOSCRIZIONE"]);//presenza A - V
			$NUM_GIORNI_PROROGA=$this->WorkIntero5("NUM_GIORNI_PROROGA",$record["GIORNI_PROROGA"]);			 //presenza A - V
			$ID_SCHEDA_LOCALE=$this->WorkNumero("ID_SCHEDA_LOCALE",$record["ID"]);												//presenza A - V
			$ID_SCHEDA_SIMOG=$this->WorkNumero("ID_SCHEDA_SIMOG",$record["ID_SIMOG"]);
			$ALTRE_MOTIVAZIONI=$this->WorkStringa("ALTRE_MOTIVAZIONI",$record["ALTRE_MOTIVAZIONI"],"1000");
            $ID_MOTIVO_VAR=$this->WorkMotivoVarianteType("ID_MOTIVO_VAR",$record["MOTIVAZIONE_VARIANTE_ID"],$conn);
			
			$xml.='<Variante><Variante tns:DATA_VERB_APPR="'.$DATA_VERB_APPR.'"';
			
			 if($ALTRE_MOTIVAZIONI!='')
			 {
				$xml.=' tns:ALTRE_MOTIVAZIONI="'.$ALTRE_MOTIVAZIONI.'"';
			}
			
			
			if($IMP_RIDET_LAVORI!=''){
				$xml.=' tns:IMP_RIDET_LAVORI="'.$IMP_RIDET_LAVORI.'"';
			}
			if($IMP_RIDET_SERVIZI!=''){
				$xml.=' tns:IMP_RIDET_SERVIZI="'.$IMP_RIDET_SERVIZI.'"';
			}
			if($IMP_RIDET_FORNIT!=''){
				$xml.=' tns:IMP_RIDET_FORNIT="'.$IMP_RIDET_FORNIT.'"';
			}
			if($IMP_SICUREZZA!=''){
				$xml.=' tns:IMP_SICUREZZA="'.$IMP_SICUREZZA.'"';
			}
			if($IMP_PROGETTAZIONE!=''){
				$xml.=' tns:IMP_PROGETTAZIONE="'.$IMP_PROGETTAZIONE.'"';
			}
			if($IMP_DISPOSIZIONE!=''){
				$xml.=' tns:IMP_DISPOSIZIONE="'.$IMP_DISPOSIZIONE.'"';
			}
			if($DATA_ATTO_AGGIUNTIVO!=''){
				$xml.=' tns:DATA_ATTO_AGGIUNTIVO="'.$DATA_ATTO_AGGIUNTIVO.'"';
			}
			if($NUM_GIORNI_PROROGA!=''){
				$xml.=' tns:NUM_GIORNI_PROROGA="'.$NUM_GIORNI_PROROGA.'"';
			}
			
			/*if ($ID_SCHEDA_LOCALE!=''){
				$xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';
			}
			if ($ID_SCHEDA_SIMOG!=''){
				$xml.=' tns:ID_SCHEDA_SIMOG="'.$ID_SCHEDA_SIMOG.'"';
			}*/
			/*if ($ID_SCHEDA_SIMOG!='')
			{
				$xml.=' tns:ID_SCHEDA_SIMOG="'.$ID_SCHEDA_SIMOG.'"';
			}
			else
			{		  
			   $query_data_DC ="SELECT  ID_SIMOG FROM DATI_COMUNI WHERE CIG='".$record["CIG"]."' AND NUM_PROGR='".$record["NUM_PROGR"]."'";
               $rsDC=$conn->doquery_oracle_import($query_data_DC, "select");
			  if($rsDC[1][1]=="")
			  {
                if ($ID_SCHEDA_LOCALE!='')
                {
			      $xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';
			    }
		      }
		    }*/
		    //modifico mettendo ID_SCHEDA_LOCALE ovunque,per non avere problemi di conflitto con ID_SCHEDA_SIMOG
		    $xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';	
		    
		   	
      																											
			$xml.='/>';
						
			if($ID_MOTIVO_VAR!=''){
				$xml.='<Motivi tns:ID_MOTIVO_VAR="'.$ID_MOTIVO_VAR.'"/>';
			}
			/*else
			{
			  if($ALTRE_MOTIVAZIONI!='')
			  {
			   $xml.='<Motivi tns:ID_MOTIVO_VAR=""/>';
			  }
			}*/
			
						
						
			$xml.='</Variante>';
		 
     }
     
		}

		$xml.='</DatiVarianti>';
		 
		return $xml;

	}

}
?>